#ifndef LIB_AX_BHP_CALLER_H
#define LIB_AX_BHP_CALLER_H
#include "libAcoustX/core/param/SolveParam_Line.h"
#include "libAcoustX/core/result/SolveResult_Line.h"
#include "libAcoustX/ocean/OceanDataset.h"
#include "libAcoustX/core/Source.h"

namespace ax {
namespace bhp {
class BhpCallerPrivate;
class AX_EXPORT BhpCaller 
{
public:
	using sptr = std::shared_ptr<BhpCaller>;
	using csptr = std::shared_ptr<const BhpCaller>;

	BhpCaller();
	virtual ~BhpCaller();

	void setBhpExePath(const std::string& bhpExePath);
	void setOceanData(const ax::ocean::Dataset::sptr& oceanData);
	void setParam(const ax::param::Line::sptr& param);
	void setSource(const ax::core::Source::sptr& source);

	ax::res::Line::sptr Call();
	std::string getLastErrorMessage() const;

protected:
	std::shared_ptr<BhpCallerPrivate> d;

private:

};

} // namespace bhp
} // namespace ax

#endif // !LIB_AX_BHP_CALLER_H
